package com.qf.service.impl;

import com.qf.dao.AdminDao;
import com.qf.dao.impl.AdminDaoImpl;
import com.qf.pojo.Admin;
import com.qf.pojo.PageBean;
import com.qf.pojo.User;
import com.qf.service.AdminService;

import java.sql.SQLException;
import java.util.List;

/**
 * @author 高圆圆
 * @date 2023/5/24 16:41
 * 管理员业务接口实现
 */
public class AdminServiceImpl  implements AdminService {
    /**
     * 管理员业务接口获取管理员实体
     * @param username 前端传过来的用户名
     * @param password 密码
     * @return 返回admin实体
     */
    @Override
    public Admin getAdminByusename(String username, String password) {
        try {
            //调用管理员数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            Admin admin = adminDao.selectAdminByUsername(username);
            if(admin!=null){
                if(admin.getPassword().equals(password)){
                    return admin ;
                }
            }


        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

   /* *//**
     * 查询所有的前台用户
     * @return 返回用户列表
     *//*
    @Override
    public List<User> getAllUser() {
        try {
            //调用AdminDao:数据访问接口获取集合数据
            AdminDao adminDao = new AdminDaoImpl() ;
            List<User> users = adminDao.selectUsers() ;
            if(users!=null || users.size()>0 ){
                return  users ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }*/

    /**
     * 获取指定的前台用户信息
     * @param uid  用户uid
     * @return 返回用户实体
     */
    @Override
    public User getUser(String uid) {
        try {
            //获取user信息,调用AdminDao
            AdminDao adminDao = new AdminDaoImpl() ;
            User user = adminDao.selectUserByUid(uid);
            if(user!=null){
                return  user ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 更新用户
     * @param user 用户实体
     * @return 返回影响的行数
     */
    @Override
    public int update(User user) {
        //访问数据库:AdminDao调用
        try {
            AdminDao adminDao = new AdminDaoImpl() ;
            int count = adminDao.updateUser(user);
            if(count>0){
                return  count ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return 0;
    }

    /**
     * 根据用户id删除
     * @param uid  用户id
     * @return 返回的影响行数
     */
    @Override
    public int delete(String uid) {
        try {
            //调用AdminDao
            AdminDao adminDao = new AdminDaoImpl() ;
            int count = adminDao.deleteUser(uid);
            if(count>0){
                return  count ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return 0;
    }

    /**
     * 业务获取分页实体PageBean的实例
     * @param currentPage  当前页码
     * @param pagesize      每页显示的条数
     * @return 返回分页实体
     */
    @Override
    public PageBean<User> getUserByPage(int currentPage, int pagesize) {

        try {
            //调用数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            //获取到总记录数
            int totalCount = adminDao.getTotalCount() ;

            //获取分页的列表数据
            List<User> list = adminDao.getUserByPage(currentPage, pagesize);
            if(totalCount>0 && list!=null){
                return new PageBean<>(currentPage,pagesize,totalCount,list) ;
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return  null ;
    }
}
